package com.ideal.manage.collection.utils;

import java.util.concurrent.*;

/**
 * Created by jimin on 15/12/1.
 * 线程池
 */
public class ThreadPool {

    private static ExecutorService defaultExecutor;  // 线程池
    /****** 初始化线程池 ******/
    static {
        // 核心池大小
        // 最大线程数
        // 空闲等待时间
        // 时间单位
        // 循环数组 + 指定大小
        defaultExecutor = new ThreadPoolExecutor(40,100, 120,TimeUnit.SECONDS,
                new ArrayBlockingQueue<Runnable>( 1000),
                new ThreadPoolExecutor.DiscardOldestPolicy()                                                                  // 抛弃最早的请求
        );
    }


    /**
     * 在未来某个时间执行给定的命令
     */
    public static void execute(Runnable runnable) throws RejectedExecutionException {
        defaultExecutor.execute(runnable);
    }

    /**
     * 提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future
     */
    public static Future<?> submit(Runnable runnable) throws RejectedExecutionException {
        return defaultExecutor.submit(runnable);
    }
}